// 定义一些和权限有关的 Vue指令

// 必须包含列出的所有权限，元素才显示
const hasPermission = {
  install(Vue) {
    Vue.directive("hasPermission", {
      inserted(el, binding, vnode) {
        const permissions = vnode.context.$store.state.user.userPerm;
        const value = binding.value;
        let flag = true;
        if (!permissions.includes(value)) {
          flag = false;
        }
        if (!flag) {
          if (!el.parentNode) {
            el.style.display = "none";
          } else {
            el.parentNode.removeChild(el);
          }
        }
      }
    });
  }
};
export default hasPermission;

// // 当不包含列出的权限时，渲染该元素
// export const hasNoPermission = {
//     install(Vue) {
//         Vue.directive('hasNoPermission', {
//             bind(el, binding, vnode) {
//                 const permissions = vnode.context.$store.state.user.permissions

//                 const value = binding.value
//                 let flag = true
//                 for (const v of value) {
//                     if (permissions.includes(v)) {
//                         flag = false
//                     }
//                 }
//                 if (!flag) {
//                     if (!el.parentNode) {
//                         el.style.display = 'none'
//                     } else {
//                         el.parentNode.removeChild(el)
//                     }
//                 }
//             }
//         })
//     }
// }

// // 只要包含列出的任意一个权限，元素就会显示
// export const hasAnyPermission = {
//     install(Vue) {
//         Vue.directive('hasAnyPermission', {
//             bind(el, binding, vnode) {
//                 const permissions = vnode.context.$store.state.user.permissions
//                 const value = binding.value
//                 let flag = false
//                 for (const v of value) {
//                     if (permissions.includes(v)) {
//                         flag = true
//                     }
//                 }
//                 if (!flag) {
//                     if (!el.parentNode) {
//                         el.style.display = 'none'
//                     } else {
//                         el.parentNode.removeChild(el)
//                     }
//                 }
//             }
//         })
//     }
// }
